home *** CD-ROM | disk | FTP | other *** search
/ AGA Toolkit '97 / The AGA Toolkit '97.iso / programming / c / make-3.75 / make.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-09-07  |  8.9 KB  |  365 lines

  1. /* Miscellaneous global declarations and portability cruft for GNU Make.
  2. Copyright (C) 1988, 89, 90, 91, 92, 93, 94, 95 Free Software Foundation, Inc.
  3. This file is part of GNU Make.
  4.  
  5. GNU Make is free software; you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation; either version 2, or (at your option)
  8. any later version.
  9.  
  10. GNU Make is distributed in the hope that it will be useful,
  11. but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. GNU General Public License for more details.
  14.  
  15. You should have received a copy of the GNU General Public License
  16. along with GNU Make; see the file COPYING.  If not, write to
  17. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  18.  
  19. /* AIX requires this to be the first thing in the file.  */
  20. #if defined (_AIX) && !defined (__GNUC__)
  21.  #pragma alloca
  22. #endif
  23.  
  24. /* We use <config.h> instead of "config.h" so that a compilation
  25.    using -I. -I$srcdir will use ./config.h rather than $srcdir/config.h
  26.    (which it would do because make.h was found in $srcdir).  */
  27. #include <config.h>
  28. #undef    HAVE_CONFIG_H
  29. #define HAVE_CONFIG_H
  30.  
  31. #ifdef    CRAY
  32. /* This must happen before #include <signal.h> so
  33.    that the declaration therein is changed.  */
  34. #define signal    bsdsignal
  35. #endif
  36.  
  37. #define _GNU_SOURCE
  38. #include <sys/types.h>
  39. #include <sys/stat.h>
  40. #include <signal.h>
  41. #include <stdio.h>
  42. #include <ctype.h>
  43. #ifdef HAVE_SYS_TIMEB_H
  44. /* SCO 3.2 "devsys 4.2" has a prototype for `ftime' in <time.h> that bombs
  45.    unless <sys/timeb.h> has been included first.  Does every system have a
  46.    <sys/timeb.h>?  If any does not, configure should check for it.  */
  47. #include <sys/timeb.h>
  48. #endif
  49. #include <time.h>
  50. #include <errno.h>
  51.  
  52. #ifndef errno
  53. extern int errno;
  54. #endif
  55.  
  56. #ifndef isblank
  57. #define isblank(c)      ((c) == ' ' || (c) == '\t')
  58. #endif
  59.  
  60. #ifdef    HAVE_UNISTD_H
  61. #include <unistd.h>
  62. /* Ultrix's unistd.h always defines _POSIX_VERSION, but you only get
  63.    POSIX.1 behavior with `cc -YPOSIX', which predefines POSIX itself!  */
  64. #if defined (_POSIX_VERSION) && !defined (ultrix)
  65. #define POSIX
  66. #endif
  67. #endif
  68.  
  69. /* Some systems define _POSIX_VERSION but are not really POSIX.1.  */
  70. #if (defined (butterfly) || defined (__arm) || \
  71.      (defined (__mips) && defined (_SYSTYPE_SVR3)) || \
  72.      (defined (sequent) && defined (i386)))
  73. #undef POSIX
  74. #endif
  75.  
  76. #if !defined (POSIX) && defined (_AIX) && defined (_POSIX_SOURCE)
  77. #define POSIX
  78. #endif
  79.  
  80. #if !defined (HAVE_SYS_SIGLIST) && defined (HAVE__SYS_SIGLIST)
  81. #define sys_siglist    _sys_siglist
  82. #define HAVE_SYS_SIGLIST    /* Now we have it.  */
  83.  
  84. /* It was declared in <signal.h>, with who knows what type.
  85.    Don't declare it again and risk conflicting.  */
  86. #define SYS_SIGLIST_DECLARED
  87. #endif
  88.  
  89. #ifdef HAVE_SYS_SIGLIST
  90. #ifndef SYS_SIGLIST_DECLARED
  91. extern char *sys_siglist[];
  92. #endif
  93. #else
  94. #include "signame.h"
  95. #endif
  96.  
  97. /* Some systems do not define NSIG in <signal.h>.  */
  98. #ifndef NSIG
  99. #ifdef    _NSIG
  100. #define NSIG    _NSIG
  101. #else
  102. #define NSIG    32
  103. #endif
  104. #endif
  105.  
  106. #ifndef RETSIGTYPE
  107. #define RETSIGTYPE    void
  108. #endif
  109.  
  110. #ifndef sigmask
  111. #define sigmask(sig)    (1 << ((sig) - 1))
  112. #endif
  113.  
  114. #ifdef    HAVE_LIMITS_H
  115. #include <limits.h>
  116. #endif
  117. #ifdef    HAVE_SYS_PARAM_H
  118. #include <sys/param.h>
  119. #endif
  120.  
  121. #ifndef PATH_MAX
  122. #ifndef POSIX
  123. #define PATH_MAX    MAXPATHLEN
  124. #endif    /* Not POSIX.  */
  125. #endif    /* No PATH_MAX.  */
  126. #ifndef MAXPATHLEN
  127. #define MAXPATHLEN 1024
  128. #endif    /* No MAXPATHLEN.  */
  129.  
  130. #ifdef    PATH_MAX
  131. #define GET_PATH_MAX    PATH_MAX
  132. #define PATH_VAR(var)   char var[PATH_MAX]
  133. #else
  134. #define NEED_GET_PATH_MAX
  135. extern unsigned int get_path_max ();
  136. #define GET_PATH_MAX    (get_path_max ())
  137. #define PATH_VAR(var)   char *var = (char *) alloca (GET_PATH_MAX)
  138. #endif
  139.  
  140. #ifdef    STAT_MACROS_BROKEN
  141. #ifdef    S_ISREG
  142. #undef    S_ISREG
  143. #endif
  144. #ifdef    S_ISDIR
  145. #undef    S_ISDIR
  146. #endif
  147. #endif    /* STAT_MACROS_BROKEN.    */
  148.  
  149. #ifndef S_ISREG
  150. #define S_ISREG(mode)   (((mode) & S_IFMT) == S_IFREG)
  151. #endif
  152. #ifndef S_ISDIR
  153. #define S_ISDIR(mode)   (((mode) & S_IFMT) == S_IFDIR)
  154. #endif
  155.  
  156.  
  157. #if    (defined (STDC_HEADERS) || defined (__GNU_LIBRARY__))
  158. #include <stdlib.h>
  159. #include <string.h>
  160. #define ANSI_STRING
  161. #else    /* No standard headers.  */
  162.  
  163. #ifdef HAVE_STRING_H
  164. #include <string.h>
  165. #define ANSI_STRING
  166. #else
  167. #include <strings.h>
  168. #endif
  169. #ifdef    HAVE_MEMORY_H
  170. #include <memory.h>
  171. #endif
  172.  
  173. extern char *malloc (), *realloc ();
  174. extern void free ();
  175.  
  176. extern void abort (), exit ();
  177.  
  178. #endif    /* Standard headers.  */
  179.  
  180. #ifdef    ANSI_STRING
  181.  
  182. #ifndef index
  183. #define index(s, c)     strchr((s), (c))
  184. #endif
  185. #ifndef rindex
  186. #define rindex(s, c)    strrchr((s), (c))
  187. #endif
  188.  
  189. #ifndef bcmp
  190. #define bcmp(s1, s2, n) memcmp ((s1), (s2), (n))
  191. #endif
  192. #ifndef bzero
  193. #define bzero(s, n)     memset ((s), 0, (n))
  194. #endif
  195. #ifndef bcopy
  196. #define bcopy(s, d, n)  memcpy ((d), (s), (n))
  197. #endif
  198.  
  199. #else    /* Not ANSI_STRING.  */
  200.  
  201. #ifndef bcmp
  202. extern int bcmp ();
  203. #endif
  204. #ifndef bzero
  205. extern void bzero ();
  206. #endif
  207. #ifndef bcopy
  208. extern void bcopy ();
  209. #endif
  210.  
  211. #endif    /* ANSI_STRING.  */
  212. #undef    ANSI_STRING
  213.  
  214. /* SCO Xenix has a buggy macro definition in <string.h>.  */
  215. #undef    strerror
  216.  
  217. #ifndef ANSI_STRING
  218. extern char *strerror ();
  219. #endif
  220.  
  221.  
  222. #ifdef    __GNUC__
  223. #undef    alloca
  224. #define alloca(n)       __builtin_alloca (n)
  225. #else    /* Not GCC.  */
  226. #ifdef    HAVE_ALLOCA_H
  227. #include <alloca.h>
  228. #else    /* Not HAVE_ALLOCA_H.  */
  229. #ifndef _AIX
  230. extern char *alloca ();
  231. #endif    /* Not AIX.  */
  232. #endif    /* HAVE_ALLOCA_H.  */
  233. #endif    /* GCC.  */
  234.  
  235. #ifndef iAPX286
  236. #define streq(a, b) \
  237.   ((a) == (b) || \
  238.    (*(a) == *(b) && (*(a) == '\0' || !strcmp ((a) + 1, (b) + 1))))
  239. #ifdef _AMIGA
  240. #define strieq(a, b) \
  241.   ((a) == (b) || \
  242.    (tolower(*(a)) == tolower(*(b)) && (*(a) == '\0' || !strcmpi ((a) + 1, (b) + 1))))
  243. #else
  244. #define strieq(a, b) \
  245.   ((a) == (b) || \
  246.    (*(a) == *(b) && (*(a) == '\0' || !strcmp ((a) + 1, (b) + 1))))
  247. #endif
  248. #else
  249. /* Buggy compiler can't handle this.  */
  250. #define streq(a, b) (strcmp ((a), (b)) == 0)
  251. #define strieq(a, b) (strcmp ((a), (b)) == 0)
  252. #endif
  253.  
  254. /* Add to VAR the hashing value of C, one character in a name.    */
  255. #define HASH(var, c) \
  256.   ((var += (c)), (var = ((var) << 7) + ((var) >> 20)))
  257.  
  258. #if defined(__GNUC__) || defined(ENUM_BITFIELDS)
  259. #define ENUM_BITFIELD(bits)     :bits
  260. #else
  261. #define ENUM_BITFIELD(bits)
  262. #endif
  263.  
  264. #ifdef __MSDOS__
  265. #define PATH_SEPARATOR_CHAR ';'
  266. #else
  267. #define PATH_SEPARATOR_CHAR ':'
  268. #endif
  269.  
  270. extern void die ();
  271. extern void message (), fatal (), error ();
  272. extern void makefile_error (), makefile_fatal ();
  273. extern void pfatal_with_name (), perror_with_name ();
  274. extern char *savestring (), *concat ();
  275. extern char *xmalloc (), *xrealloc ();
  276. extern char *find_next_token (), *next_token (), *end_of_token ();
  277. extern void collapse_continuations (), remove_comments ();
  278. extern char *sindex (), *lindex ();
  279. extern int alpha_compare ();
  280. extern void print_spaces ();
  281. extern struct dep *copy_dep_chain ();
  282. extern char *find_char_unquote (), *find_percent ();
  283.  
  284. #ifndef NO_ARCHIVES
  285. extern int ar_name ();
  286. extern void ar_parse_name ();
  287. extern int ar_touch ();
  288. extern time_t ar_member_date ();
  289. #endif
  290.  
  291. extern void dir_load ();
  292. extern int dir_file_exists_p (), file_exists_p (), file_impossible_p ();
  293. extern void file_impossible ();
  294. extern char *dir_name ();
  295.  
  296. extern void define_default_variables ();
  297. extern void set_default_suffixes (), install_default_suffix_rules ();
  298. extern void install_default_implicit_rules (), count_implicit_rule_limits ();
  299. extern void convert_to_pattern (), create_pattern_rule ();
  300.  
  301. extern void build_vpath_lists (), construct_vpath_list ();
  302. extern int vpath_search ();
  303.  
  304. extern void construct_include_path ();
  305. extern void uniquize_deps ();
  306.  
  307. extern int update_goal_chain ();
  308. extern void notice_finished_file ();
  309.  
  310. extern void user_access (), make_access (), child_access ();
  311.  
  312.  
  313. #ifdef    HAVE_VFORK_H
  314. #include <vfork.h>
  315. #endif
  316.  
  317. /* We omit these declarations on non-POSIX systems which define _POSIX_VERSION,
  318.    because such systems often declare the in header files anyway.  */
  319.  
  320. #if !defined (__GNU_LIBRARY__) && !defined (POSIX) && !defined (_POSIX_VERSION)
  321.  
  322. extern long int atol ();
  323. extern long int lseek ();
  324.  
  325. #endif    /* Not GNU C library or POSIX.    */
  326.  
  327. #ifdef    HAVE_GETCWD
  328. extern char *getcwd ();
  329. #else
  330. extern char *getwd ();
  331. #define getcwd(buf, len)        getwd (buf)
  332. #endif
  333.  
  334. extern char **environ;
  335.  
  336. extern char *reading_filename;
  337. extern unsigned int *reading_lineno_ptr;
  338.  
  339. extern int just_print_flag, silent_flag, ignore_errors_flag, keep_going_flag;
  340. extern int debug_flag, print_data_base_flag, question_flag, touch_flag;
  341. extern int env_overrides, no_builtin_rules_flag, print_version_flag;
  342. extern int print_directory_flag, warn_undefined_variables_flag;
  343. extern int posix_pedantic;
  344.  
  345. extern unsigned int job_slots;
  346. #ifndef NO_FLOAT
  347. extern double max_load_average;
  348. #else
  349. extern int max_load_average;
  350. #endif
  351.  
  352. extern char *program;
  353. extern char *starting_directory;
  354. extern unsigned int makelevel;
  355. extern char *version_string, *remote_description;
  356.  
  357. extern unsigned int commands_started;
  358.  
  359. extern int handling_fatal_signal;
  360.  
  361.  
  362. #define DEBUGPR(msg) \
  363.   do if (debug_flag) { print_spaces (depth); printf (msg, file->name); \
  364.                fflush (stdout); } while (0)
  365.